package com.hoshiibuy.common.exception;

import lombok.Builder;
import lombok.Getter;

import java.io.Serializable;

/**
 * <p> 错误 </p>
 *
 * @author yl
 * @since 2019-04
 */
@Getter
@Builder
public class CommonError implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 错误代码
     */
    private Integer code;

    /**
     * 错误信息
     */
    private String msg;

    /**
     * 获取基本错误
     *
     * @return 错误
     */
    public static CommonError error() {
        return CommonError.builder().code(-100).msg("处理失败").build();
    }

    /**
     * 获取基本错误
     *
     * @param msg 错误信息
     * @return 错误
     */
    public static CommonError error(String msg) {
        return CommonError.builder().code(-100).msg(msg).build();
    }

    /**
     * 获取授权错误
     *
     * @return 错误
     */
    public static CommonError codeError() {
        return CommonError.builder().code(-200).msg("授权错误").build();
    }

    /**
     * 获取授权错误
     *
     * @param msg 错误消息
     * @return 错误
     */
    public static CommonError codeError(String msg) {
        return CommonError.builder().code(-200).msg(msg).build();
    }

    /**
     * 获取凭证错误
     *
     * @return 错误
     */
    public static CommonError tokenError() {
        return CommonError.builder().code(-300).msg("凭证错误").build();
    }

    /**
     * 凭证过期
     *
     * @return 错误
     */
    public static CommonError tokenExpiredError() {
        return CommonError.builder().code(-400).msg("凭证已过期").build();
    }

    /**
     * 获取凭证错误
     *
     * @param msg 错误消息
     * @return 错误
     */
    public static CommonError tokenError(String msg) {
        return CommonError.builder().code(-300).msg(msg).build();
    }

    /**
     * 凭证过期
     *
     * @param msg 错误消息
     * @return 错误
     */
    public static CommonError tokenExpiredError(String msg) {
        return CommonError.builder().code(-400).msg(msg).build();
    }

    /**
     * 获取未授权错误
     *
     * @return 错误
     */
    public static CommonError unauthorizedError() {
        return CommonError.builder().code(401).msg("请求未授权").build();
    }

    /**
     * 获取权限不足错误
     *
     * @return 错误
     */
    public static CommonError forbiddenError() {
        return CommonError.builder().code(403).msg("用户权限不足").build();
    }

    /**
     * 获取地址不存在错误
     *
     * @return 错误
     */
    public static CommonError notFoundError() {
        return CommonError.builder().code(404).msg("请求地址不存在").build();
    }

    /**
     * 获取服务错误
     *
     * @return 错误
     */
    public static CommonError serviceError() {
        return CommonError.builder().code(500).msg("服务器开小差了").build();
    }

}
